﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.ComponentModel.DataAnnotations;

namespace workflowMVC.Models
{
    public class ContestModel
    {
        [Required(ErrorMessage="Tên không được trống")]
        [MaxLength(30)]
        [Display(Name="Tên cuộc thi")]
        public string Title { get; set; }


        [Display(Name = "Mô tả")]
        [Required(ErrorMessage="Mô tả không được trống")]
        public string Description { get; set; }

        [Display(Name = "Giám khảo")]
        [Required(ErrorMessage = "Giám khảo không được trống")]
        public Dictionary<string, bool> field { get; set; }

        [Display(Name = "Hạn chót nộp bài")]
        [Required(ErrorMessage = "Hạn chót nộp bài không được trống")]
        public DateTime ExpDate { get; set; }
    }

    public class CreatePostModel
    {
        [Display(Name = "Nội dung")]
        [Required(ErrorMessage = "Nội dung không được trống")]
        public string TestContent { get; set; }
        //public Guid ContestId { get; set; }

        [Display(Name = "Tiêu đề")]
        [Required(ErrorMessage = "Tiêu đề không được trống")]
        public string Tittle { get; set; }
    }

    public class ListContestModel
    {
        public DateTime CreateDate { get; set; }
        public string Title { get; set; }       

        public string Status { get; set; }

        public Guid Id { get; set; }
    }

    public class DetailContentModel
    {
        [Display(Name = "Tiêu đề")]
        public string Title { get; set; }

        [Display(Name = "Ngày Tạo")]
        public DateTime CreateDate { get; set; }

        [Display(Name = "Tình trạng")]
        public string Status { get; set; }

        public byte StatusValue { get; set; }

        [Display(Name = "Mô tả")]
        public string Description { get; set; }

        public Guid Id { get; set; }

        [Display(Name = "Danh sách giám khảo")]
        public List<string> Judges { get; set; }

        [Display(Name = "Hạn chót nộp bài")]
        public DateTime ExpDate { get; set; }
    }

    public class PostLink
    {
        public string Name{ get; set; }
        public string Grade{ get; set; }       
        public string PostName { get; set; }
        public Guid PostId { get; set; }
    }

    public class GradePostModel
    {
        public Guid ContestId { get; set; }

        [Display(Name = "Tên cuộc thi")]
        public string ContestTitle { get; set; }

        [Display(Name = "Nội dung")]
        public string TestContent { get; set; }

        [Display(Name = "Tiêu đề bài thi")]
        public string PostTittle { get; set; }
        [Display(Name = "Tên thí sinh")]
        public string Name { get; set; }
        [Display(Name = "Mã số SV")]
        public string NumCode { get; set; }
        [Display(Name = "Ngày tạo")]
        public DateTime CreateDate { get; set; }
        [Display(Name = "Điểm")]
        public byte grade { get; set; }

        public List<string> Judges { get; set; }

        public byte ContestStatusValue { get; set; }

        public bool IsGraded { get; set; }

        [Display(Name = "Chi tiết chấm điểm")]
        public List<JudgeGrade> jG { get; set; }

        [Display(Name = "Tổng số điểm")]
        public string TotalGrade { get; set; }
    }

    public class JudgeGrade
    {
        public string Judge { get; set; }
        public byte Grade { get; set; }
    }

    public class GradePostListModel
    {
        public DateTime CreateDate { get; set; }
        public string Name { get; set; }
        public string NumCode { get; set; }        
        public string PostTittle { get; set; }
        public bool IsGraded { get; set; }
        public Guid PostId { get; set; }
        
    }

    public class MySubmListModel
    {
        public DateTime CreateDate { get; set; }
        public string ContestName { get; set; }
        public string PostTittle { get; set; }
        public bool IsGraded { get; set; }
        public Guid PostId { get; set; }
        
    }

    public class GradePostTableModel
    {
        public string ContestTitle { get; set; }
        public Guid Id { get; set; }
        public string DataLink { get; set; }
    }
}
